﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace hercules.Models
{
    public class ProdutoVendaModel
    {
        [Required]
        [DisplayName("Número da Nota")]
        public Int32 NumeroNota { get; set; }

        [Required]
        [DisplayName("Código do Produto")]
        public Int32 IdProduto { get; set; }

        [Required]
        [DisplayName("Quantidade")]
        public Int32 Quantidade { get; set; }

        [Required]
        [DisplayName("Preço")]
        public decimal Preco { get; set; }

        [DisplayName("Venda")]
        public Venda Venda { get; set; }

        [DisplayName("Produto")]
        public Produto Produto { get; set; }

        public ProdutoVenda ProdutoVendaModelToProdutoVenda(ProdutoVendaModel produtoVendaModel)
        {
            ProdutoVenda produtoVenda = new ProdutoVenda();
            produtoVenda.numeroNota = produtoVendaModel.NumeroNota;
            produtoVenda.idProduto = produtoVendaModel.IdProduto;
            produtoVenda.quantidade = produtoVendaModel.Quantidade;
            produtoVenda.preco = produtoVendaModel.Preco;

            produtoVenda.Venda = produtoVendaModel.Venda;
            produtoVenda.Produto = produtoVendaModel.Produto;

            return produtoVenda;
        }

        public ProdutoVendaModel ProdutoVendaToProdutoVendaModel(ProdutoVenda produtoVenda)
        {
            ProdutoVendaModel produtoVendaModel = new ProdutoVendaModel();
            produtoVendaModel.NumeroNota = produtoVenda.numeroNota;
            produtoVendaModel.IdProduto = produtoVenda.idProduto;

            produtoVendaModel.Venda = produtoVenda.Venda;
            produtoVendaModel.Produto = produtoVenda.Produto;

            if (produtoVenda.quantidade != null) produtoVendaModel.Quantidade = (int) produtoVenda.quantidade;
            if (produtoVenda.preco != null) produtoVendaModel.Preco = (decimal) produtoVenda.preco;

            return produtoVendaModel;
        }

        public List<ProdutoVendaModel> ListProdutoVendaToListProdutoVendaModel(List<ProdutoVenda> lista)
        {
            return lista.Select(ProdutoVendaToProdutoVendaModel).ToList();
        }
    }
}